Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 << zurück
Visual C# 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2005

Visual C# 2005
1.320 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-586-X
gp Kapitel 8 Features von Visual Studio 2005
  gp 8.1 Die XML-Dokumentation
    gp 8.1.1 Was ist XML?
    gp 8.1.2 XML-Kommentare
    gp 8.1.3 Die XML-Kommentar-Tags
    gp 8.1.4 Generieren der XML-Dokumentationsdatei
  gp 8.2 Der Klassendesigner (Class Designer)
    gp 8.2.1 Ein typisches Klassendiagramm
    gp 8.2.2 Hinzufügen von Klassendiagrammen
    gp 8.2.3 Die Toolbox des Klassendesigners
    gp 8.2.4 Das Fenster »Klassendetails«
    gp 8.2.5 Das Klassendiagramm um Typen erweitern
    gp 8.2.6 Vererbungsbeziehungen definieren
    gp 8.2.7 Zuordnungen festlegen
    gp 8.2.8 Klassendiagramme als Bilder exportieren
  gp 8.3 Refactoring
    gp 8.3.1 Methode extrahieren
    gp 8.3.2 Umbenennen von Bezeichnern
    gp 8.3.3 Felder kapseln
    gp 8.3.4 Schnittstelle extrahieren
    gp 8.3.5 Beeinflussung der Parameterliste
  gp 8.4 Code Snippets (Codeausschnitte)
    gp 8.4.1 Codeausschnitte einfügen
    gp 8.4.2 Die Anatomie eines Codeausschnitts
    gp 8.4.3 Eigene Code Snippets definieren


Galileo Computing

8.2 Der Klassendesigner (Class Designer)  downtop

In vielen Unternehmen erstellen die Entwickler zur Designphase das Klassendesign mit Hilfe der UML (Unified Modeling Language), um die schwierigen und komplexen Anforderungen an eine ausgefeilte Software zu erfüllen. UML ist eine Spezifikation, die eine Reihe von Diagrammen definiert, mit denen eine objektorientierte Software während der Designphase nicht nur visuell dargestellt, sondern auch modelliert werden kann. Mit dem Klassendiagramm von UML lassen sich zum Beispiel Klassen samt ihrer Beziehungen und der Vererbungslinien darstellen.

Das .NET Framework ist noch eine recht junge Entwicklungsphilosophie. Das hat zur Folge, dass nicht alle Konzepte des .NET Frameworks mit UML modelliert werden können. Delegate und Ereignisse sind zwei Beispiele dafür. Aus diesem Grund ist im Visual Studio 2005 mit dem Klassendesigner ein Werkzeug integriert, mit dem Klassendiagramme, ähnlich den UML-Klassendiagrammen, modelliert werden können. Der Klassendesigner des Visual Studios unterstützt folglich alle Konzepte des .NET Frameworks und kann darüber hinaus auch den Code und die Klassendiagramme synchron halten. Mit anderen Worten bedeutet das, dass es möglich ist, im Klassendiagramm zu modellieren, was sofort vom Programmcode übernommen wird. Aber auch umgedreht kann sich ein Klassendiagramm den Änderungen im Code anpassen.


Galileo Computing

8.2.1 Ein typisches Klassendiagramm  downtop

In Abbildung 8.4 sehen Sie ein typisches Klassendiagramm. Es werden die drei uns bekannten Klassen Flugzeug, Hubschrauber und Zeppelin sowie deren gemeinsame Basisklasse Luftfahrzeug angezeigt.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.4   Ein typisches Klassendiagramm

Wie Sie anhand der Abbildung vermutlich schon erahnen, lassen sich im Klassendesigner auf anschauliche Art und Weise auch komplexe Zusammenhänge zwischen den Klassen erkennen und deren Struktur analysieren. Dabei ist ein Klassendiagramm nicht nur auf Klassen beschränkt, wie im ersten Moment vielleicht zu vermuten wäre. Ebenso lassen sich alle anderen Typdefinitionen des .NET Frameworks abbilden, also Strukturen, Delegaten, Schnittstellen usw.

Änderungen und Ergänzungen, die Sie im Klassendesigner vornehmen, tragen ihre Früchte sofort im Programmcode: Er passt sich den Änderungen im Designer an und übernimmt die Ergänzungen, beispielsweise zusätzliche Typdefinitionen. Ändern Sie andererseits den Programmcode, werden die Änderungen vom Klassendiagramm übernommen. Das hört sich nicht nur gut an, es funktioniert auch ganz prima. An der einen und anderen Stelle stößt man aber dennoch auf kleinere Schwächen, die den ansonsten sehr guten Eindruck ein wenig trüben, aber dennoch am Nutzen des Klassendesigners keinen Zweifel aufkommen lassen. Fügen Sie beispielsweise eine Klasse per Code dem Projekt hinzu, wird diese nicht automatisch im Klassendiagramm übernommen. Zudem können Sie im Designer keine generischen Typen definieren. Zumindest in der aktuellen Version nicht.

Die Terminologie des Designers orientiert sich an der jeweiligen Programmiersprache. Haben Sie sich für Visual Basic .NET entschieden, werden die Modifizierer und anderen sprachspezifischen Elemente in Visual Basic angeboten, bei einem C#-Projekt ist es analog in C#.

In Abbildung 8.5 sehen Sie den Klassendesigner in der Entwicklungsumgebung von Visual Studio 2005. In erster Linie werden wir es mit drei neuen Fenstern während der Klassenmodellierung zu tun haben:

gp  Die Toolbox, in der uns alle Elemente angeboten werden, die wir in den Designer mit Drag & Drop ziehen können.
gp  Das Klassendiagramm, in dem alle am Designprozess teilnehmenden Typen visualisiert dargestellt sind.
gp  Das Fenster der Klassendetails, mit denen die Member eines Typs analysiert, geändert oder hinzugefügt werden können.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.5   Die Entwicklungsumgebung des Klassendesigners


Galileo Computing

8.2.2 Hinzufügen von Klassendiagrammen  downtop

Ein Klassendiagramm ist die Sicht auf die Typstruktur des Programmcodes. Klassendiagramme sind zwar Teil eines Projekts, müssen aber ausdrücklich hinzugefügt werden. Öffnen Sie dazu das Kontextmenü des Projekts im Projektmappen-Explorer, und wählen Sie Klassendiagramm anzeigen. Sie kommen auch über den Menüpunkt Hinzufügen · Neues Element ... oder über den Hauptmenüpunkt Projekt zum Ziel.

Dem Projekt wird eine Datei mit der Endung .cd hinzugefügt. Handelt es sich um die erste Klassenansicht im Projekt, lautet der Bezeichner der Datei standardmäßig ClassDiagram1.cd. Im Designbereich von Visual Studio 2005 sehen Sie anschließend das Klassendiagramm mit allen Typen, die bis zu diesem Zeitpunkt im Projekt mittels Programmcode definiert worden sind. Bei einem zuvor angelegten Konsolenprojekt ist das nur die Klasse Program. Die CD-Datei ist eine XML-Datei, die nicht nur die einzelnen Typen, sondern auch deren Eigenschaften, Methoden usw. samt deren Parametern exakt beschreibt, die im Klassendiagramm dargestellt werden.

Die in einem Klassendiagramm visualisierten Typen können Sie sich ganz nach Wunsch mehr oder weniger detailliert anzeigen lassen. Wenn Sie nur an den Beziehungen zwischen den Typen interessiert sind, benötigen Sie keine weiteren Member-Angaben, die in diesem Moment nur überflüssig wären. Sie können die gewünschte Ansicht (mit bzw. ohne Member-Liste) einstellen, indem Sie im Designer auf den Doppelpfeil klicken, der links oben im Typrahmen zu sehen ist.

Sind Sie an den Membern eines Typs interessiert, können Sie sich diese in folgenden Ansichten anzeigen lassen:

gp  nur die Bezeichner
gp  die Bezeichner einschließlich der Typangabe
gp  die Bezeichner einschließlich der kompletten Signatur

Die Umschaltung erfolgt in der Symbolleiste des Klassendesigners (siehe Abbildung 8.6).

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.6   Die Symbolleiste des Klassendesigners

In Abbildung 8.7 sehen Sie die Klasse Circle, die wir in den vorhergehenden Kapiteln Schritt für Schritt entwickelt haben. Ganz links ist die visualisierte Klasse ohne Member-Liste zu sehen, in der Mitte mit Member-Liste und Bezeichner und rechts außen die maximale Darstellung, also einschließlich der gesamten Signatur.

Die vorgabemäßige Gruppierung der Klassenmitglieder erfolgt in den Kategorien der Member-Typen. Der Klassendesigner gestattet Ihnen auch, alle Member nach Zugriffsmodifizierern zu sortieren. Die Umschaltung zwischen diesen beiden Ansichten erfolgt in der Symbolleiste des Klassendesigners mit den beiden linken Schaltflächen.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.7   Die verschiedenen Typansichten im Klassendiagramm


Galileo Computing

8.2.3 Die Toolbox des Klassendesigners  downtop

In der Toolbox werden ganz im Sinne des Klassendesigners Elemente angeboten, die Sie mittels Drag & Drop in den Designbereich ziehen können. Dazu zählen nicht nur Klassen Strukturen, Delegate und Enumerationen, sondern auch Vererbungs- und Zuordnungslinien.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.8   Die Toolbox des Klassendesigners


Galileo Computing

8.2.4 Das Fenster »Klassendetails«  downtop

Für die im Klassendiagramm aktuell markierte Klasse werden die Klassen-Member im Fenster Klassendetails unterhalb des Klassendiagramms angezeigt. Sollte bei Ihnen dieses Fenster nicht zu sehen sein, können Sie es über Ansicht · Weitere Fenster öffnen. Dieses Fenster ist für Ihre Arbeit vielleicht das interessanteste, denn es erlaubt das Hinzufügen und Editieren folgender Klassenmitglieder:

gp  Methoden
gp  Eigenschaften
gp  Felder
gp  Ereignisse
gp  Konstruktoren
gp  Destruktor
gp  Konstanten

Das Fenster hat eine linksbündige Symbolleiste mit fünf Schaltflächen. Die unteren vier dienen der Navigation innerhalb der Liste. Mit der oberen können Sie alle denkbaren Mitgliedstypen hinzufügen, einschließlich der Angabe von Typ und Zugriffsmodifizierer. Die Spalte Zusammenfassung unterstützt das <summary>-Tag der XML-Dokumentation.

Die rechte Spalte Ausblenden hat keinen Einfluss auf die Klassendefinition und wirkt sich nur auf die Anzeige des betreffenden Members im Klassendiagramm aus.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.9   Das Fenster »Klassendetails«

Jeder Methodeneintrag ist mit einem Knoten versehen. Wenn Sie diesen öffnen, können Sie für die entsprechende Methode alle notwendigen Parameter definieren. Geben Sie den Parameternamen an, tragen Sie den gewünschten Datentyp ein, und – falls erforderlich – wählen Sie einen Parametermodifizierer aus der Liste der Spalte Modifizierer aus. In Abbildung 8.9 wurde auf diese Weise die Methode TestProc zur Klasse Program hinzugefügt.

Wie schon angedeutet, synchronisiert das Visual Studio 2005 Klassendesigner und Code. Die Einträge, die auf diese Weise vorgenommen worden sind, entfalten sich im Code-Editor wie folgt:


/// <summary>
/// Eine reine Testmethode
/// </summary>
public void TestProc(out string param1, ref int param2)
{
  throw new System.NotImplementedException();
}

Vielleicht fällt Ihnen auf, dass die Modifizierer, die im Zusammenhang mit der Vererbung stehen, nicht zur Auswahl anstehen: abstract, override, virtual, sealed. Tatsächlich können diese nur im Eigenschaftsfenster der ausgewählten Methode eingestellt werden. Das Eigenschaftsfenster sollten wir uns noch etwas genauer ansehen, denn hier bieten sich noch weitere Optionen an, die nicht nur die Vererbungsmodifizierer betreffen.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.10   Das Eigenschaftsfenster einer Methode im Klassendesigner


Tabelle 8.2   Die editierbaren Eigenschaften einer Methode im Eigenschaftsfenster

Eigenschaft Beschreibung
Benutzerdefinierte Attribute Der Name ist ein wenig irreführend. Tatsächlich können Sie hier alle Attribute angeben, die mit der Methode verknüpft werden sollen.
Hinweise Gibt den Inhalt des <remarks>-Tags der XML-Dokumentation an.
Name Der Bezeichner des Members.
Neu Die Einstellung True gibt an, dass dieses Member ein geerbtes Member verbirgt.
Rückgabewerte Gibt den Inhalt des <returns>-Tags der XML-Dokumentation an.
Statisch Mit der Einstellung True wird dieses Member zu einem statischen.
Typ Gibt den Typ des Members an.
Vererbungsmodifizierer Hier geben Sie an, welcher Modifizierer, der im Zusammenhang mit der Vererbung steht, der Signatur hinzugefügt werden soll.
Zugriff Gibt den Zugriffsmodifizierer an.
Zusammenfassung Gibt den Inhalt des <summary>-Tags der XML-Dokumentation an.

Das Hinzufügen der anderen Mitglieder (Konstruktoren, Eigenschaften etc.) unterscheidet sich nicht wesentlich von dem einer Methode. Daher erübrigt sich an dieser Stelle, darauf im Detail einzugehen. Auch für sie gilt, dass im Eigenschaftsfenster einige Optionen angeboten werden, die Sie im Fenster Klassendetails vermissen.


Galileo Computing

8.2.5 Das Klassendiagramm um Typen erweiterdowntop

Seine Vorzüge spielt der Klassendesigner aus, wenn während der Designphase der Software die gesamte Klassenstruktur nebst allen Methodenrümpfen visuell, man kann es kaum passender ausdrücken, zusammengeschraubt wird. Dazu brauchen wir natürlich in erster Linie die Klassen, aus denen sich das Modell der Anwendung zusammensetzt.

Ziehen Sie dazu für jede gewünschte Klasse das Element Klasse aus der Toolbox in den Designer. Im Dialog, der sich daraufhin öffnet (siehe Abbildung 8.11), tragen Sie den Klassenbezeichner ein, wählen den Zugriffsmodifizierer aus der Liste aus und müssen sich dann auch entscheiden, ob Sie für die Klassendefinition eine neue Quellcodedatei wünschen. Wenn nicht, fügen Sie die neue Klasse einer vorhandenen Datei hinzu. Die Vererbungsmodifizierer legen Sie später im Eigenschaftsfenster fest.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.11   Dialog zum Hinzufügen einer neuen Klasse im Klassendesigner

Das Element Klasse der Toolbox ist einer Einschränkung unterworfen: Sie können damit leider keine generische Klasse bereitstellen. Das geht nur, wenn Sie die generische Klasse zuerst codieren und anschließend dem Klassendiagramm hinzufügen.

Ein wenig anders müssen Sie vorgehen, wenn Sie eine Klasse per Code definieren und im Projekt bereits ein Klassendiagramm vorhanden ist. Die neu codierte Klasse wird nicht automatisch dem Klassendiagramm hinzugefügt, sondern muss ausdrücklich hinzugefügt werden. Dazu öffnen Sie die Klassenansicht über das Menü Ansicht. Während im Projektmappen-Explorer die projektzugehörigen Dateien aufgeführt sind, finden Sie in der Klassenansicht alle Typdefinitionen des Projekts wieder, unabhängig von der Sourcecode-Datei. Ziehen Sie die Klasse, die Sie dem Klassendiagramm hinzufügen wollen, mittels Drag & Drop in das Klassendiagramm.

Benötigen Sie in Ihrem Projekt eine abstrakte Klasse, eine Schnittstelle, eine Enumeration, eine Struktur oder einen Delegaten in das Klassendiagramm, ändert sich nichts an der Vorgehensweise. Entweder Sie ziehen den gewünschten Typ aus der Toolbox in das Klassendiagramm oder, wenn bereits codiert, aus der Klassenansicht.

Fügen Sie Ihrem Projekt erstmalig ein Klassendiagramm hinzu, werden alle Typen des Projekts automatisch übernommen und dargestellt. Vielleicht sind Sie aber nur an einem Ausschnitt einer komplexen Klassenhierarchie interessiert. Markieren Sie dann einfach die unbenötigten Typen, und drücken Sie die (Entf)-Taste. Dabei erfolgt keine Synchronisation zwischen dem Klassendiagramm und dem Programmcode – die Typdefinition bleibt im Programmcode erhalten.

Möchten Sie jedoch gleichzeitig auch den Code des entsprechenden Typs löschen, öffnen Sie das Kontextmenü des markierten Elements. Hier finden Sie das Menüelement Code löschen, das Code und Klassendiagramm synchronisiert.


Galileo Computing

8.2.6 Vererbungsbeziehungen definieren  downtop

Wenn Sie jetzt von den Vorzügen des Klassendesigners überzeugt sind, werden Sie bestimmt versuchen, einen großen Teil der Entwicklungsarbeit mit diesem grafischen Tool zu erledigen. Dazu gehört auch, Klassen voneinander abzuleiten und Schnittstellen zu implementieren. In beiden Fällen hilft das Element Vererbung aus der Toolbox, dass nicht per Drag & Drop gezogen wird, sondern in der Toolbox einfach nur markiert werden muss. Danach ändert sich das Aussehen des Mauszeigers, der unten rechts ein zusätzliches Symbol zeigt.

Klicken Sie nun auf die Klasse, die eine der im Klassendiagramm visualisierten Schnittstellen implementieren soll, bzw. auf die Klasse, die zur abgeleiteten Klasse einer anderen Klasse werden soll. Anschließend klicken Sie auf die Schnittstelle oder, im anderen Fall, auf die Basisklasse.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.12   Vererbungslinien in einem Klassendiagramm


Galileo Computing

8.2.7 Zuordnungen festlegen  downtop

Eigenschaften und Felder einer Klasse lassen sich als Zuordnungen darstellen. Das Feld bzw. die Eigenschaft wird dann weder im Rahmen des Typs noch unter Klassendetails angezeigt. Stattdessen wird der Typ visualisiert. Ein Zuordnungspfeil mit einem entsprechenden Symbol, das mit dem Bezeichner des Mitglieds versehen ist, kennzeichnet die Zugehörigkeit als Eigenschaft oder Feld der Klasse.

In der folgenden Abbildung beschreibt Spannweite ein Feld des Typs Flugzeug. Spannweite ist vom Typ double, der über einen Zuordnungspfeil mit der Klasse Flugzeug verknüpft ist. Sehr schön ist zu erkennen, welche Schnittstellen die Struktur Double implementiert. Auf die Anzeige der Member-Liste wurde hier jedoch verzichtet.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 8.13   Die Darstellung einer Zuordnung

Befindet sich im Klassendiagramm ein visualisierter Typ, der auch gleichzeitig Datentyp einer Eigenschaft oder Feldes ist, können Sie den Datentyp unter Klassendetails manuell eintragen. Es wird kein Zuordnungspfeil angezeigt, und das Feld bzw. die Eigenschaft wird im Rahmen der Klasse angezeigt. Markieren Sie im Klassenrahmen die Eigenschaft und öffnen das Kontextmenü, wird Ihnen die Option Als Zuordnung anzeigen angeboten. Diese bewirkt, dass der Datentyp in einem eigenen Rahmen angezeigt und zwischen Klasse und Datentyp ein Zuordnungspfeil dargestellt wird. Das Symbol oberhalb des Pfeils kennzeichnet, ob es sich um ein Feld oder eine Eigenschaft handelt. Daneben erscheint auch der Bezeichner des betreffenden Feldes bzw. der Eigenschaft.

Sie können das Element Zuordnung jedoch auch in der Toolbox markieren und anschließend den Zuordnungspfeil in gleicher Weise wie den der Vererbung auf die beiden betroffenen Rahmen ziehen.


Galileo Computing

8.2.8 Klassendiagramme als Bilder exportieren  toptop

Der Klassendesigner bietet Ihnen an, ein Klassendiagramm als Bild in verschiedenen Bildformaten zu exportieren. Damit wird Ihnen neben den entwicklungstechnischen Fähigkeiten des Klassendesigners ermöglicht, Dokumentationen anschaulich um die Darstellung der Struktur einer Klassenhierarchie zu ergänzen oder das Bild in eine Präsentation wie zum Beispiel MS PowerPoint zu integrieren. Zu den angebotenen Formaten zählen unter anderem auch BMP, GIF und JPEG.

Dazu öffnen Sie im Visual Studio 2005 das Menü Klassendiagramm und wählen im Untermenü Diagramm als Bild exportieren.... Es öffnet sich ein Dialog, in dem Sie die zu exportierenden Klassendiagramme auswählen, die Speicherlokalität festlegen und aus einer Liste das gewünschte Bildformat einstellen können.

 << zurück
  
  Zum Katalog
Zum Katalog: Visual C# 2005
Visual C# 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Visual Basic 2005






 Visual Basic 2005


Zum Katalog: Java ist auch eine Insel






 Java ist auch eine
 Insel


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de